<?php

class Application_Model_Circuitos extends Sgit_Model
{
    protected $_name = 'circuitos';
    protected $_primary = 'id';


    public function getCircuitos($values, $id = null)
    {

        $select = $this->getAdapter()->select();
        $select->from(array('circuitos'));
        $select->joinLeft('cuadros', 'cuadros.id = circuitos.id_cuadro', array('cuadro', 'servicio', 'id_cc'));
        $select->joinLeft('proyectos', 'proyectos.id = circuitos.id_proyecto', array('proyecto' => 'nombre', 'orden'));
        $select->joinLeft('contadores', 'contadores.id = circuitos.id_contador', array('codigo', 'id_contador' => 'id'));

        if (!is_null($id))
        {
            $select->where("circuitos.id= ?", $id);
        } else
        {
            if ($values['id_zona'])
                $select->where("circuitos.id_zona= ?", $values['id_zona']);
            if ($values['id_proyecto'])
                $select->where("circuitos.id_proyecto= ?", $values['id_proyecto']);
            if ($values['id_cuadro'])
                $select->where("circuitos.id_cuadro= ?", $values['id_cuadro']);
        }

        $select->order(array('cuadro','proyecto', 'position', 'circuito'));


        $rows = $this->getAdapter()->fetchAll($select);


        foreach ($rows as $k => $v)
        {
            if ($v['id_cuadro'])
            {
                $rows[$k]['cuadro'] = array('id'=>$v['id_cuadro'],'cuadro' => $v['cuadro'], 'servicio' => $v['servicio'], 'id_cc' => $v['id_cc']);
            }
                unset($rows[$k]['servicio'],$rows[$k]['id_cc'],$rows[$k]['id_cuadro']);
          
            if ($v['id_proyecto'])
            {
                $rows[$k]['proyecto'] = array('id'=>$v['id_proyecto'],'nombre' => $v['nombre'], 'orden' => $v['orden']);
                    
            }
              unset($rows[$k]['nombre'],$rows[$k]['orden'],$rows[$k]['id_proyecto']);
          
            if ($v['id_contador'])
            {
                $rows[$k]['contador'] = array('id'=>$v['id_contador'],'codigo' => $v['codigo'] );
                
            }
                 unset($rows[$k]['id_contador'],$rows[$k]['codigo'],$rows[$k]['id_proyecto']);
           

        }

        if (is_null($id))
            return $rows;
        else
            return $rows[0];

    }


    function getProyectosByCuadro($id_cuadro)
    {

        $select = $this->getAdapter()->select();
        $select->from(array('circuitos'), array('id_proyecto', 'c' => new Zend_Db_Expr('COUNT(*)'), ));

        $select->joinLeft('proyectos', 'proyectos.id = circuitos.id_proyecto', array('proyecto' => new Zend_Db_Expr("IFNULL(proyectos.nombre,'Libre')")));
        $select->where("circuitos.id_cuadro= ?", $id_cuadro);
        $select->group("id_proyecto");
        $rows = $this->getAdapter()->fetchAll($select);
        $rows = $this->assocArray2($rows, 'id_proyecto');
        return $rows;
    }


    function rearrange($positions)
    {


        $b = explode('&', $positions);

        foreach ($b as $v)
        {
            $c = explode('=', $v);
            $key_value[] = $c[1];
        }

        $updateVals = array();

        foreach ($key_value as $k => $v)
        {
            $strVals[] = ' WHEN ' . (int)$v . ' THEN ' . ((int)$k + 1) . ' ';
        }

        if (!$strVals)
            return;

        $sql = "UPDATE circuitos SET position = CASE id  " . join($strVals) . "  ELSE position END";

        $this->getAdapter()->query($sql);

    }


}
